Line 81 is actually this line:
Code:
usAccumulator = CRCUpdate(usAccumulator, cChar);
There's obviously no backslash involved, but CRCUpdate is a macro, so we should look at what it expands to:
Code:
#define CRCUpdate(usAccumulator, usData) \ ((usAccumulator << 8) ^ vusCRCTable[(usAccumulator >> 8) ^ usData])
Now we can see the stray backslash: there shouldn't be a backslash between the macro identifier/parameters and the replacement, unless you're introducing a physical source line, e.g.,
Code:
#define CRCUpdate(usAccumulator, usData) \
((usAccumulator << 8) ^ vusCRCTable[(usAccumulator >> 8) ^ usData])
Therefore, you should have written:
Code:
#define CRCUpdate(usAccumulator, usData) ((usAccumulator << 8) ^ vusCRCTable[(usAccumulator >> 8) ^ usData])
Actually, because usAccumulator and usData might be expressions more complex than simple variable names, it would be best to write:
Code:
#define CRCUpdate(usAccumulator, usData) (((usAccumulator) << 8) ^ vusCRCTable[((usAccumulator) >> 8) ^ (usData)])